Coordinated data conversion systems and methods

ABSTRACT

An exemplary system includes a plurality of heterogeneous data subsystems maintaining local data and a coordinator subsystem configured to maintain global data mapped from the local data, the global data including a plurality of global data relationship views. One of the heterogeneous data subsystems is configured to initiate a data conversion of at least one local data record included in the local data from an origin data schema to a target data schema and to provide at least one data update message representative of the data conversion to the coordinator subsystem. The coordinator subsystem is configured to receive the data update message and asynchronously propagate the data conversion through to at least a subset of the global relationship views in the global data.

RELATED APPLICATIONS

This application is a continuation-in-part of presently pending U.S. patent application Ser. No. 11/618,007, filed Dec. 29, 2006, entitled LIFE CYCLE BASED DATA COORDINATION, which is hereby incorporated by reference in its entirety.

BACKGROUND INFORMATION

A typical enterprise computing environment includes multiple heterogeneous and distributed data systems supporting a variety of different enterprise organizations (e.g., departments). For example, many enterprises such as businesses and the like maintain separate database systems to support customer billing, sales, accounting, marketing, inventory, ordering, repairs, procurement, service, etc. Further, many enterprises are the result of a merger of two or more predecessors, each with their own set of heterogeneous and distributed data systems.

Data stored in the heterogeneous database systems of an enterprise is typically used for different business purposes and may be defined according to different local schemas (e.g., defined in different formats, according to different technologies, according to different data models, or according to different business rules). For example, different enterprise database systems may use different local schemas to represent a customer and/or accounts associated with the customer. In addition, because enterprise database systems often serve different business purposes, the relationships between customer and account records, and the data included in the records, may vary and/or may be defined differently across the enterprise database systems.

Maintaining multiple heterogeneous database systems can require a significant amount of work and sophistication, especially for enterprises storing large amounts of data. One area of concern involves the handling of data updates. It is particularly challenging and time consuming to propagate data updates across heterogeneous database systems in a manner that accurately and uniformly reflects customer and account evolutions while also conforming to disparate business rules and data schemas associated with the different departments in the enterprise. Conventional techniques for propagating data updates between heterogeneous data subsystems rely on ad hoc peer-to-peer relationships and communications. In certain cases, significant amounts of manual labor are required to assess peer-to-peer relationships between database systems in an ad hoc fashion. Such techniques can quickly become complicated and time consuming for an enterprise that maintains heterogeneous database systems storing large amounts of data and/or having unique and dynamic relationships with one another.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate various exemplary implementations and are a part of the specification. The illustrated implementations are merely examples and do not limit the scope of the disclosure. Throughout the drawings, identical reference numbers designate identical or similar elements.

FIG. 1A is a block diagram illustrating an exemplary data management system.

FIG. 1B illustrates exemplary components of a life cycle agent included in the data management system of FIG. 1A.

FIG. 2 illustrates an exemplary hierarchical data structure.

FIG. 3 illustrates another exemplary hierarchical data structure.

FIG. 4 illustrates exemplary components of a life cycle coordinator included in the data management system of FIG. 1A.

FIG. 5 illustrates exemplary hierarchical data structures in a first state.

FIG. 6 illustrates exemplary hierarchical data structures in a second state.

FIG. 7 illustrates exemplary hierarchical data structures in a third state.

FIG. 8 is a flowchart illustrating an exemplary data update process.

FIG. 9 is a flowchart illustrating an exemplary data schema conversion process.

FIG. 10 illustrates exemplary local and global hierarchical data structures in a first state.

FIG. 11 illustrates exemplary local and global hierarchical data structures in a second state.

FIG. 12 illustrates exemplary local and global hierarchical data structures in a third state.

FIG. 13 illustrates exemplary local and global hierarchical data structures in a fourth state.

FIG. 14 illustrates exemplary local and global hierarchical data structures in a fifth state.

FIG. 15 illustrates exemplary local and global hierarchical data structures in a sixth state.

DETAILED DESCRIPTION

Exemplary systems and methods for coordinating data updates are described herein. In certain exemplary implementations, a data management system includes a plurality of heterogeneous data subsystems configured to maintain local data and a coordinator subsystem configured to maintain global data mapped from the local data. A global data life cycle model is used to coordinate data updates between the global data and the local data. The global data life cycle model defines at least one life cycle for the global data maintained by the coordinator subsystem. For example, the global data may include global data records, and the global data life cycle model may define one or more life cycles for the global data records. The global life cycles may give life to the global data records over time and may facilitate asynchronous data updates across the local data stored in the heterogeneous data subsystems and/or in the global data stored in the coordinator subsystem.

The heterogeneous data subsystems and the coordinator subsystem may each be configured to communicate with and translate data update messages that are defined according to the global data life cycle model. The data update messages may be translated into data operations that can be performed to update the local and/or global data. Accordingly, the coordinator subsystem can coordinate and significantly automate the propagation of data updates across data subsystems, and thereby reduce the amount of time and resources typically used for conventional ad hoc peer-to-peer data update techniques. With the global data life cycle model being used for communications between the coordinator subsystem and the heterogeneous data subsystems, the coordinator subsystem is able to provide centralized and ordered control for the propagation of data updates across the data management system.

The systems and methods described herein may be implemented by and benefit an enterprise maintaining heterogeneous data subsystems associated with various departments and/or business purposes of the enterprise. For example, a service provider enterprise may include separate data subsystems (e.g., customer billing, sales, accounting, marketing, inventory, ordering, repairs, procurement, service, etc.) and may implement a coordinator subsystem and global data life cycle model for coordinating data updates across the data subsystems. Life cycles may be used to coordinate data updates in a centrally controlled manner, and in a manner that supports the diverse business rules and operations of departments in the enterprise. In addition, life cycles may support asynchronous data updates in the global data, which may be utilized to provide a user (e.g., a customer) with access to appropriate data (e.g., customer and account data) while certain data updates (e.g., migrations from one data schema to another) are performed transparently to the user.

FIG. 1A illustrates an exemplary data management system 100 (or simply “the system 100”), according to an implementation. As shown in FIG. 1A, the system 100 may include data subsystems 110-1 through 110-N (collectively the “data subsystems 110”) communicatively coupled to a coordinator subsystem 120 having a data integration module 130, life cycle coordinator 134, and data store 140. The system 100 may also include an access subsystem 150 communicatively coupled to the coordinator subsystem 120 and also configured to communicate with an access device 160, which is configured to present a user interface 170 for consideration of a user of the access device 160.

The elements of the system 100 may communicate using any known communication technologies, devices, media, and protocols supportive of data communications, including, but not limited to, the Internet, intranets, local area networks, other communications networks, data networks, data transmission media, communications devices, Transmission Control Protocol (“TCP”), Internet Protocol (“IP”), File Transfer Protocol (“FTP”), Telnet, Hypertext Transfer Protocol (“HTTP”), socket connections, Ethernet, data bus technologies, and other suitable communications technologies. At least some of the communications (synchronization communications) between the data subsystems 110 and the coordinator subsystem 120 as carried out in certain exemplary implementations are described in co-pending patent application Ser. No. 11/443,364, entitled “Asynchronous Data Integrity For Enterprise Computing,” filed May 31, 2006 and hereby fully incorporated herein by reference in its entirety.

In certain exemplary implementations, the elements of the system 100 are implemented in one or more computers. The system 100 may include any computer hardware and/or instructions (e.g., software programs), or combinations of software and hardware, configured to perform the processes described herein. In particular, it should be understood that the system 100 may be implemented on more than one physical computing device. Accordingly, the system 100 may include any one of a number of well-known computing devices (e.g., one or more servers), and may employ any of a number of well-known computer operating systems, including, but by no means limited to, known versions and/or varieties of the Microsoft Windows® operating system, the Unix operating system, and the OS/390 operating system. The system 100 may also employ any of a number of well-known database management tools, including, but not limited to, known versions and/or varieties of “Microsoft SQL Server” sold by Microsoft Corporation of Redmond, Wash. and “DB2” sold by International Business Machines Corporation of Armonk, N.Y.

Accordingly, the processes described herein may be implemented at least in part as instructions executable by one or more computing devices. In general, a processor (e.g., a microprocessor) receives instructions, e.g., from a memory, a computer-readable medium, etc., and executes those instructions, thereby performing one or more processes, including one or more of the processes described herein. Such instructions may be stored and transmitted using a variety of known computer-readable media.

A computer-readable medium (also referred to as a processor-readable medium) includes any medium that participates in providing data (e.g., instructions) that may be read by a computer (e.g., by a processor of a computer). Such a medium may take many forms, including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media may include, for example, optical or magnetic disks and other persistent memory. Volatile media may include, for example, dynamic random access memory (“DRAM”), which typically constitutes a main memory. Transmission media may include, for example, coaxial cables, copper wire and fiber optics, including the wires that comprise a system bus coupled to a processor of a computer. Transmission media may include or convey acoustic waves, light waves, and electromagnetic emissions, such as those generated during radio frequency (“RF”) and infrared (“IR”) data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EEPROM, any other memory chip or cartridge, or any other medium from which a computer can read.

While an exemplary system 100 is shown in FIG. 1A, the exemplary components illustrated in the Figure are not intended to be limiting. Indeed, other alternative hardware environments and implementations may be used. The components of system 100 will now be described in additional detail.

The data subsystems 110 may include any suitable computing devices and data management applications configured to store electronic data that may be referred to as “local data.” Each of the data subsystems 110 may include one or more databases and/or other data storage technologies.

In certain exemplary implementations, the data subsystems 110 maintain local data for different organizations (e.g., departments) or purposes of an enterprise. Without limitation, each of the data subsystems 110 may be associated with billing, sales, accounting, marketing, inventory, ordering, repairs, service, procurement, or other purpose or organization of the enterprise.

Typically, the different data subsystems 110 are heterogeneous. For example, one or more of the data subsystems 110 may store local data according to different data schemas (e.g., according to different technologies, formats, data models, or business rules) than the schemas used by the other data subsystems 110. For example, data subsystem 110-1 may employ a first data schema, data subsystem 110-2 may employ a second data schema, and data subsystem 110-N may employ another data schema. The data schemas may be proprietary, open, or a combination thereof.

Examples of local data that may be stored by the data subsystems 110 may include, but are not limited to, customer identifiers (e.g., customer names and codes), customer type identifiers, customer account identifiers (e.g., account numbers), customer account type identifiers, service identifiers, and service type identifiers (e.g., Plain Old Telephone Services (“POTS”), long distance services, Voice over Internet Protocol (“VoIP”) services, wireless telephone services, data services, network access services (e.g., Internet access services, Digital Subscriber Line (“DSL”) services, optical fiber services, content delivery services (e.g., delivery of video, audio, or multimedia content), financial services, credit card services, banking services, communication services, Asynchronous Transfer Mode (“ATM”) circuits, and any other type of service that may be provided by an enterprise). Local data may also include, but is not limited to, local service status information, geographical region identifiers, addresses, dates (e.g., a date service was initiated or an account opened), service or account expiration dates, group identifiers (e.g., identifiers for a particular group of accounts or customers), and backend subsystem identifiers (e.g., identifiers indicative of the particular data subsystems 110).

The local data may be representative of relationships between information associated with customers and accounts. For example, relationships between customer entities and/or customer accounts may be represented as local data relationships (e.g., local hierarchical data structures) in the data subsystems 110. Because of the heterogeneous nature of the data subsystems 110, data relationships and other information for any particular customers and/or accounts may be the same, similar, or different across different data subsystems 110, even for the same customer. The differences may be due to disparate business purposes or operations, which often lead to the management of data according to different business rules across the different data subsystems 100. By way of an example, different business rules may dictate that a new account be added to a particular data subsystem 110 (e.g., data subsystem 110-1) used for marketing purposes in advance of the new account being added to a different data subsystem 110 (e.g., data subsystem 110-2) used for billing purposes.

The local data in data subsystems 110 may also be associated with local life cycles, which may represent life spans of local data records at a local level. The local life cycles may be defined in accordance with local life cycle models. Local life cycle models may be and typically are heterogeneous across the data subsystems 110. Accordingly, different data subsystems 110 may employ different life cycles. Each local life cycle may include one or more stages defining a life span of a data record, and a local data record may include or otherwise be associated with a particular one of the stages to indicate the life cycle status of the data record. For example, a data subsystem 110 associated with an orders department of an enterprise may define a local subscription data record representative of a customer account in accordance with a local life cycle having stages such as “create” for creation of the record, “install” for steps related to the provisioning of the service associated with the account, “test” for testing the service, “active” for an activated service, “decommission” for termination of the service, and “delete” for deletion of the subscription data record.

Each data subsystem 110 may be configured to perform local data operations to act on its local data. The local data operations may include any operation that is potentially helpful for managing the local data, including creating, accessing, modifying, and deleting local data records and relationships.

The data subsystems 110-1 through 110-N may include life cycle agents 180-1 through 180-N (collectively referred to as “life cycle agents 180”), respectively. Each of the life cycle agents 180 may be configured to coordinate local data operations and/or life cycle statuses of the corresponding data subsystem 110 with data update messages that are used to communicate with the coordinator subsystem 120 and are defined in accordance with a global data life cycle model, which is described further below. In particular, a life cycle agent 180 of a particular data subsystem 110 may be configured to (1) translate data update messages received from the coordinator subsystem 120 into local data operations that can be performed to update local data in the data subsystem 110 and (2) translate data operations performed on local data in the data subsystem 110 into data update messages that can be provided to the coordinator subsystem 120. Accordingly, a life cycle agent 180 may link local data operations of a corresponding data subsystem 110 to data update messages that can be used to interface the data subsystem 110 with the coordinator subsystem 120.

Each life cycle agent 180 may include local data operations logic that maps the global data life cycle model to local data operations and vice versa. FIG. 1B illustrates an exemplary life cycle agent 180 including a translator 184 configured to use a local data operations logic 186 for translating between local data operations 188 and data update messages 190 that are defined in accordance with a global data life cycle model. The local data operations logic 186 may be predefined by operators of the corresponding data subsystem 110 or in any other suitable manner. The local data operations logic 186 may be based on local business rules associated with the data subsystems 110 and may therefore be heterogeneous across the data subsystems 110. The local data operations logic 186 may include information representative of a local data life cycle model that is used to define local life cycles for the local data. Local data operations logic 186 may be defined to suit a particular application or data subsystem 110.

The data subsystems 110 may initiate data updates. For example, any one of the data subsystems 110 (e.g., data subsystem 110-1) may perform a local data operation 188 updating the local data included therein. The corresponding life cycle agent 180-1 may translate the local data operation 188 and generate one or more data update messages 190 including information descriptive of the local data update, the data update messages 190 being defined in accordance with a global data life cycle model. As described further below, the data update messages 190 may be provided to the coordinator subsystem 120, which can process the messages 190 and update global data to reflect the update to the local data. The coordinator subsystem 120 may also control propagation of the data update to other data subsystems 110.

In the reverse direction, the life cycle agent 180-1 of the data subsystem 110-1 may receive one or more data update messages 190 from the coordinator subsystem 120. The life cycle agent 180-1 may use its corresponding local data operations logic 186 to translate the data update messages 190 to local data operations 188 to be performed by the data subsystem 110-1. The data subsystem 110-1 may perform the local operations 188 and thereby propagate the data update in the global data through to the local data stored in the data subsystem 110-1.

The coordinator subsystem 120 may store “global data” that has been mapped from at least a subset of the local data stored in the data subsystems 110. The global data may be mapped from the local data and stored at the coordinator subsystem 120 in any suitable manner, including any of the ways described in co-pending patent application Ser. No. 11/443,363, entitled “Systems and Methods For Managing Integrated And Customizable Data,” filed May 31, 2006 and hereby fully incorporated herein by reference in its entirety.

The data integration module 130 may be configured to perform any global data operations that may be potentially helpful for mapping, generating, storing, modifying, updating, accessing, deleting, or otherwise managing the global data in relation to the local data. The global data may be stored in data store 140. The data integration module 130 and data store 140 may function in any of the ways described in the above noted co-pending U.S. patent application Ser. No. 11/443,363.

The global data stored in the data store 140 may include, but is not limited to, customer records (also referred to as “subscriber records”), account records (also referred to as “subscription records”), map records indicative of relationships between customer and account records, relationship type identifiers indicative of the types of relationships between global data records, global life cycle status identifiers, and any information included in the local data from which the global data is mapped. Global data records may be assigned unique identifiers that enable the global data to be used across the system 100 and that allow the global data to be mapped from heterogeneous data subsystems 110.

The global data may represent relationships between customer entities, accounts, and/or customer entities and accounts. The data relationships in the global data may be represented by one or more hierarchical data structures (also referred to as “data hierarchies” or “data relationship views”) of global data records. The hierarchical data structures may be representative of one or more local hierarchical data structures stored in the data subsystems 110. As used herein, the terms “data hierarchical structure,” “data hierarchy,” and “data relationship view” refer to a hierarchical relationship of data records to one another. For example, an association of an account data record to a customer data record forms a simple hierarchical data structure. Of course, other hierarchical data structures may be more complex.

To facilitate an understanding of hierarchical data structures that may be included in the coordinator subsystem 120, FIG. 2 illustrates an exemplary hierarchical data structure 200. As shown in FIG. 2, hierarchical data structure 200 may include subscriber records 210-1 and 210-2, subscription records 220-1 through 220-3, and map records 230-1 through 230-4 organized to represent relationships between the data records. Hierarchical data structure 200 is just one example of many possible hierarchical data structures that may be included in the global data. One or more data objects or other suitable data instances may be used to represent the data records in the hierarchical data structure 200.

Subscriber records 210-1 and 210-2 (collectively “subscriber records 210”) may represent customer entities including but not limited to business organizations and/or individuals. Map record 230-1 depicts a parent-child relationship between subscriber records 210-1 and 210-2. This may be representative of the relationship between two customer entities, such as a relationship between a subsidiary and parent company.

Subscription records 220-1 through 220-3 (collectively “subscription records 220”) may represent customer accounts including, but not limited to, accounts related to services provided to an entity by an enterprise. Map records 230-3 and 230-4 depict parent-child relationships between subscription records 220-1, 220-2, and 220-3. This may be representative of the relationship between three customer accounts, such as a relationship between a summary of individual accounts. Map record 230-3 depicts an association of subscription record 220-1 to subscriber record 210-2. This may be representative of accounts associated with (e.g., paid for by) a customer.

Map records 230 may be of different types. For example, one type of map record may be used to represent relationships between subscriber records. Map record 230-1 links subscribers 210-1 and 210-2 and is an example of this type of map record. Another type of map record may be used to represent relationships between subscriber and subscription records. Map record 230-2 links subscriber 220-2 and subscription 220-1 and is an example of this type of map record. Another type of map record may be used to represent relationships between subscription records. Map records 230-3 and 230-4 link subscription records to one another and are examples of this type of map record.

As described in the above noted co-pending U.S. patent application Ser. No. 11/443,363, the global data may include multiple hierarchical data structures. In particular, separate hierarchical data structures may represent local data hierarchies in various data subsystems 110. For subscriber record 210-1, for example, the data subsystems 110 may maintain various local data hierarchies representative of local data relationships including the subscriber record 210-1, including marketing, ordering, and billing view data hierarchies, for instance. In some cases, multiple hierarchical data structures may be the same. In other cases, multiple hierarchical data structures may be different.

By way of an example, hierarchical data structure 200 may represent a global representation of a local hierarchical data structure stored in data subsystem 110-2 and having subscriber record 210-1 as the root node. The coordinator subsystem 120 may include another hierarchical data structure for the same subscriber (having the same subscriber record 210-1 as its root node) as represented in another data subsystem 110-1. For example, FIG. 3 illustrates another hierarchical data structure 300 in which subscriber record 210-1 is again the root node. Hierarchical data structure 300 is the same as hierarchical data structure 200 except that hierarchical data structure 300 includes an additional subscriber record 210-3 linked as a child node of subscriber record 210-2 by map record 230-5. Subscriber record 210-3 may be representative of a potential new customer that has been identified by a marketing department of an enterprise and is locally represented in data subsystem 110-1 but that is not yet propagated to hierarchical data structure 200, which may be associated with a billing data view.

As described further below, a global data life cycle model can be used to coordinate propagations of data updates to various hierarchical data structures in the global data. This allows data updates to be applied to different hierarchical data structures at different times (i.e., asynchronously) in view of business rules. For example, a potential new customer may be relevant to a marketing data view but not to a billing data view. When the potential new customer signs up for a service, the subscriber record for the customer may become relevant to the billing data view, and an update of the billing data view may be triggered and performed.

Global data maintained by the coordinator subsystem 120 may be defined in accordance with at least one global life cycle. The life cycle may be designed to give life to the global data over time and can be used to support asynchronous updates of hierarchical data structures in the global data. As described below, a global life cycle may specify stages of a life span of a global data record. Different data records, or types of data records, may be associated with different life cycles. Exemplary life cycles and their stages are described further below.

The coordinator subsystem 120 may include a global data life cycle model, and the global life cycles may be defined based on the global data life cycle model. The global data life cycle model may be included in the life cycle coordinator 134 of the coordinator subsystem 120. FIG. 4 illustrates an exemplary implementation of the life cycle coordinator 134. As shown, the life cycle coordinator 134 may include a global data life cycle model 410, which may be defined by operators of the coordinator subsystem 120 as may suit a particular application. The global data life cycle model 410 and life cycles defined in accordance with the global data life cycle model 410 may be representative of business rules. Accordingly, data record life spans as defined by the life cycles can be representative of typical data life spans that may occur or be employed for a particular business application. In certain examples, a life span is associated with the statuses of a data record in relation to its creation, modification, deletion, or other events. Thus, the life cycles can give life to global data records over time and in association with the stages of the items (e.g., customer entities, accounts, and data relationships) represented by the data records.

The global data life cycle model may selectively correlate specific life cycles with certain global data records. The correlation may be based on the type of a global data record. In certain implementations, for example, subscriber records 210 are associated with a first global life cycle (e.g., a subscriber life cycle), subscription records 220 are associated with a second life cycle (e.g., a subscription life cycle), and map records 230 are associated with one or more other life cycles (e.g., map life cycles). In certain implementations, subscriber records 210 may adhere to a subscriber life cycle representative of a typical life span of customer records, subscription records 220 may adhere to a subscription life cycle representative of a typical life span of customer account records, and map records 230 may adhere to one or more map record life cycles representative of typical life spans of data relationships.

Different types of map records 230 may be associated with different life cycles. For example, a subscriber-subscriber map record 230-1 may adhere to a first map record life cycle, a subscription-subscription map record 230-3 may adhere to a second map record life cycle, and a subscriber-subscription map record 230-3 may adhere to a third map record life cycle. This may be helpful for representing differences between life spans of different types of data relationships.

The stages of life cycles may be referred to as life cycle statuses and may be indicated by life cycle status identifiers. A global data record may include or otherwise be associated with a life cycle status identifier indicative of the current life cycle status of the data record. The life cycle status identifier of a data record may be updated to reflect a change in the life cycle status of the data record.

Data update messages 190 may also include life cycle status identifiers associated with data updates and/or the data records associated with data updates. Accordingly, the life cycle status identifiers in data update messages 190 can be used to coordinate data updates across the data subsystems 110 and within the coordinator subsystem 120, as described further below.

An exemplary global data life cycle model 410 and associated life cycles and life cycle status identifiers will now be described. However, the description of the exemplary global data life cycle model 410 and associated life cycles and life cycle status identifiers is not limiting. Any other suitable global data life cycle model 410 may be employed as may suit a particular application.

In certain exemplary implementations, a subscription record life cycle may include stages referred to as “pending,” “active,” “disconnected,” “final,” “inactive,” and “deleted.” A life cycle status identifier in a subscription record 220 may indicate the current life cycle stage for the subscriber record 220. For example, a subscription record 220 may be created to represent a new account. At this stage, the life cycle status identifier for the subscription record 220 may be and remain “pending” until a predetermined event occurs. For instance, the life cycle status identifier may be changed to “active” when a service associated with the new account has been made available. The subscription record 220 may be “disconnected” for a number of reasons, including termination of service by the customer or the enterprise, or for a migration from the data schema of the subscription record 220 to another data schema, in which case a new subscription record may be created for the account and the original subscription record 220 “disconnected.” The life cycle status for the subscription record 220 may be updated to “final” to prevent certain actions from being performed in relation to the subscription record 220. The subscription record 220 may be “deleted” to end its life cycle.

In certain exemplary implementations, a subscriber record life cycle may include stages referred to as “pending,” “active,” “verified,” “unverified,” “expired,” “inactive,” “no action,” and “deleted.” A life cycle status identifier in a subscriber record 210 may indicate the current life cycle stage for the subscriber record 210. For example, a subscriber record 210 may be created to represent a potential new customer. At this stage, the life cycle status identifier for the subscriber record 210 may be “pending.” When the potential new customer becomes a customer by establishing or agreeing to establish an account for a service, the subscriber record 210 may be updated to have an “active” life cycle status. At the end of a first billing cycle for the service subscribed to by the customer, the subscriber record 210 may be updated to have a “verified” life cycle status. The subscriber record 210 may be “unverified” and/or “expired” for a number of reasons, including dissolution or divestiture of the customer entity, or for a migration from the data schema of the subscriber record 210 to another data schema, in which case a new subscriber record may be created for the customer and the original subscriber record 210 “expired.” The subscriber record 220 may also be “unverified” to allow it to be updated in accordance with a data update (e.g., a transfer to a different parent node). The life cycle status for the subscriber record 210 may be updated to “no action” to prevent certain actions from being performed in relation to the subscriber record 210, including assigning a subscription record 220 to the “no action” subscriber record 210. The subscriber record 210 may be “deleted” to end its life cycle.

In certain exemplary implementations, a map record (e.g., map record 230-3) linking subscription records 220 together may be associated with a life cycle having “establish,” “remove,” and “transfer” stages. The map record 220-3 may include a life cycle status identifier indicating the current life cycle stage of the map record 220-3. An “establish” status may indicate the existence of a parent-child relationship, or may serve to instruct that a parent-child relationship be established between subscription records 220. A “remove” status may indicate the termination of a parent-child relationship, or may instruct that a parent-child relationship be terminated between subscription records 220. A “transfer” status may instruct that a child subscription record 220 be moved to a different parent node.

In certain exemplary implementations, a map record (e.g., map record 230-1) linking subscriber records 210 together may be associated with a life cycle having “establish,” “verify,” “unverify,” “remove,” and “transfer” stages. The map record 230-1 may include a life cycle status identifier indicating the current life cycle stage of the map record 230-1. The “establish,” “remove,” and “transfer” statuses may be the same or similar to those described above for a subscription-to-subscription map record 230-1. A “verify” status may be used to lock the relationship and can be used to prevent changes to map record 230-1. An “unverify” status may be used to unlock the relationship and can be used to allow changes (e.g., changes for data updates and/or migrations) to be made to the map record 230-1.

In certain exemplary implementations, a map record (e.g., map record 230-2) linking a subscriber record 210-2 with a subscription record 220-1 may be associated with a life cycle having “assign,” “verify,” “unverify,” “unassign,” “transfer,” and “copy” stages. The map record 230-2 may include a life cycle status identifier indicating the current life cycle stage of the map record 220-1. The “establish,” “remove,” and “transfer” statuses may be the same or similar to those described above for a subscription-to-subscription map record 230-3. A “verify” status may be used to lock the relationship and can be used to prevent changes to the map record 220-1. An “unverify” status may be used to unlock the relationship and can be used to allow changes (e.g., changes for data updates) to be made to the map record 220-1. An “unassign” status may be used to put a map record in a temporary state of not being assigned to a parent and/or child node. This may be in preparation for a data operation, such as a change to a data relationship. A “copy” status may be used to instruct that a copy of a map record be made.

The global data life cycle model, life cycles, and life cycle status identifiers, including the exemplary global data life cycle model, life cycles, and life cycle status identifiers described above, may be used to coordinate data updates in the global data and between the global data and the local data. Updates may be represented in one or more data update messages 190 defined in accordance with the global data life cycle model 410. The data update messages 190 may include life cycle status information descriptive of or otherwise associated with the data updates. The life cycle status information, which is defined in accordance with the global data life cycle model 410, can be used by the coordinator subsystem 120 and/or the data subsystems 110 to identify data operations to be performed for the data update. Accordingly, the data update messages 190 provide a common data update communication protocol that enables the coordinator subsystem 120 to coordinate data updates across local data in the data subsystems 110 and/or within the global data stored in data store 140.

When a data update is initiated and/or performed in one set of data, data update messages 190 defined in accordance with the global data life cycle model 140 can be used to communicate data representative of the data update across elements of the system 100, which are able to process the data update messages 190, including translating them into location-specific data operations to be performed to carry out the data update. The coordinator subsystem 120 and the data subsystems 110 can use life cycle status information included in data update messages 190 to identify the appropriate data operations to be performed.

As shown in FIG. 4, the life cycle coordinator 134 may include a translator 430 configured to translate between data update messages 190 and global data operations 440. Translations may be performed using global data operations logic 450. The global data operations logic 450 may be predefined by an operator of the coordinator subsystem 120 and may be tailored to suit a particular application. The global data operations logic 450 may map global data operations 440 to data update messages 190 and vice versa. The global data operations logic 450 may be representative of business rules of an enterprise.

The global data operations 440 may include any operations that may be performed on the global data stored in data store 140, including creating, storing, accessing, modifying, updating, transferring, rearranging, deleting, or otherwise managing the global data. The global data operations 440 may be executed by the data integration module 130.

To facilitate an understanding of the capabilities of the system 100, an exemplary coordination of certain data updates will now be described. The following examples are not limiting in any sense. The system 100 may also coordinate other data updates.

In one particular example, a customer entity may merge with another customer entity, and data maintained by the system 100 may be updated in a coordinated manner to reflect the merger. As used herein, the term “merger” may refer to any change in relationships between business entities, including acquisitions, divestitures, etc. The life cycle coordinator 134 can control the propagation of data updates such that different sets of data are updated at appropriate times as may be defined by business rules.

FIG. 5 illustrates hierarchical data structures 500 and 550 that may be included in the global data stored in the data store 140 prior to a merger being integrated into the system 100. In this particular example, hierarchical data structures 500 and 550 are the same and include subscriber record 210-4 situated as a parent node of subscriber record 210-5. Map record 230-6 links the subscriber records 210-4 and 210-5. In this example, each of the data records in hierarchical data structures 500 and 550 has an “active” life cycle status. Hierarchical data structure 500 may represent a marketing data view representative of local data relationships in data subsystem 110-1, and hierarchical data structure 550 may represent a billing data view representative of local data relationships in data subsystem 110-2.

The hierarchical data structures 500 and 550 may represent a relationship between business entities. For example, subscriber record 210-4 may represent a parent company and subscriber record 210-5 may represent a subsidiary of the parent company.

A marketing department may learn of a merger in which the parent entity represented by subscriber record 210-4 has sold its subsidiary entity represented by subscriber record 210-5 to another business entity. The marketing department may learn of the merger in any suitable way, including by way of a third-party notification service. The marketing department may initiate a data update that updates local data in data subsystem 110-1 to reflect the merger. For example, a local data record for the subsidiary entity may be moved from being a child node of the origin parent entity to become a child node of a data record representative of the new parent entity. The update may be performed using local data operations and in accordance with local marketing business rules associated with the data subsystem 110-1.

The local data update may be propagated from data subsystem 110-1 to other elements of the system 100 in a coordinated manner that is configured to adhere to diverse business rules associated with the elements of the system 100. In data subsystem 110-1, translator 184 may translate the local data operations that were performed to carry out the update into one or more data update messages 190. The translation may be performed based on predefined local data operations logic 186, as described above. Data update messages 190 may be sent from the data subsystem 110-1 to the coordinator subsystem 120.

The data update messages 190 may be defined in accordance with the global data life cycle model 410 and may include at least one life cycle status identifier associated with the data update. For example, the data update messages 190 may identify subscriber records 210-4 and 210-5 and map record 230-6, as well as their life cycle statuses before, during, and after the data update. For example, subscriber record 210-5 may be “unverified” and “verified” during the data update. Map record 230-6 may be “unverified,” “transfer,” and “verified” during the data update.

The data update messages 190 may include any other information that may be helpful for performing the data update, including data identifying a global subscriber record 210-6 that is representative of the new parent entity and destination information identifying the subscriber record 210-6 as the new parent node of subscriber record 210-5.

The data update messages 190 may include any information descriptive of the merger. For example, the data update messages 190 may include a date on which the merger was agreed to, announced, or approved, as well as a data on which the merger is projected to be granted legal effect. For example, the merger may be announced on a particular date and be projected to become legally effective at a later data (e.g., three months later).

The coordinator subsystem 120 may receive the data update messages 190 and translate them into global data operations 440 to be performed to carry out the data update in the global data. The translator 430 of the life cycle coordinator 134 may perform the translation based on predefined global data operations logic 450, as described above. The translation may also consider any information included in the data update messages 190, including life cycle identifiers, dates, source, etc. This information may be used to coordinate asynchronous updates of hierarchical data structures included in the global data. For example, the global data operations logic 440 may be defined to indicate that the marketing view hierarchical data structure 500 is to be updated when the data subsystem 110-1 is updated. The data update messages 190 may identify data subsystem 110-1 as their source, and translator 430 may generate global data operations for updating hierarchical data structure 500 to reflect the local data update performed in data subsystem 110-1. The data integration module 130 may apply the global data operations to the hierarchical data structure 500 to form hierarchical data structure 600, which is shown in FIG. 6.

FIG. 6 illustrates the state of the global data after the data update has been propagated to the global marketing view representative of local data in data subsystem 110-1 but before the data update has been propagated to the global billing view (i.e., hierarchical data structure 550) representative of the local data in data subsystem 110-2. This is one example of an asynchronous update of hierarchical data structures included in the global data of the coordinator subsystem 120. As described below, such asynchronous updates of data relationship views in the global data can be used to provide a user of the access device 160 with access to certain global data to which the user is entitled. The access may be provided while data updates are being performed.

The life cycle coordinator 134 may be configured to determine when to propagate the data update to the billing hierarchical data structure 550. The determination may be made in any suitable manner. In some examples, the life cycle coordinator may schedule the propagation to be performed when the merger is given legal effect (e.g., at the three month date specified in the data update messages 190 or when an external source notifies the coordinator subsystem 120 that the merger has been granted legal effect).

At this point, the life cycle coordinator 134 and data integration module 120 may function as described above to apply global data operations to the billing view hierarchical data structure 550 to form hierarchical data structure 650 shown in FIG. 7. FIG. 7 illustrates the state of the global data after the data update has been propagated to both the global marketing view representative of local data in data subsystem 110-1 and the global billing view representative of the local data in data subsystem 110-2. As shown in FIG. 7, subscriber record 210-5 has been transferred from subscriber record 210-4 to subscriber record 210-6. This may be accomplished by unverifying, reassigning, and verifying map record 230-6 such that it is reassigned to identify subscriber record 210-6 as its parent node.

The life cycle coordinator 134 may be configured to propagate the update to the global billing view to the corresponding data subsystem 110-2. The life cycle coordinator 134 may translate the global data operations performed on the billing view into one or more data update messages 190 that are representative of the update and defined in accordance with the global data life cycle model 410. The data update messages 190 may include any information associated with the data update, including life cycle statuses associated with the update.

The data update messages 190 may be provided to the data subsystem 110-2 in any suitable manner. In certain implementations, the coordinator subsystem 120 may be configured to broadcast data update messages 190 to all of the data subsystems 110, which may be configured to determine whether the data update messages 190 are locally relevant. To this end, the data update messages 190 may include data identifying the data subsystem 110-2, the nature of the update made in the global data, or any other information that might be helpful for determining the local relevancy of the data update messages 190. In other implementations, the coordinator subsystem 120 may be configured to determine the relevant data subsystems 110 and provide the data update messages 190 only to the identified data subsystems 110.

In this or similar manner, the coordinator subsystem 120 can coordinate data updates across different sets of data stored in the system 100. The global data life cycle model provides a common protocol for defining and communicating data update messages 190 between the elements of the system 100. Further, the global data life cycle model enables data updates to be performed asynchronously across the system 100 to the satisfaction of diverse business rules.

The coordinator subsystem 120 may similarly control propagations of other data updates across the system 100, including data updates initiated by a user of the access device 160 by way of the access subsystem 150. For example, a user may order a service through the access subsystem 150, and the coordinator subsystem 120 may coordinate updates associated with creating and managing data representative of the service.

The coordinator subsystem 120 may also be configured to coordinate data updates that include migrations from one data schema to another. In certain implementations, the global data life cycle model may define one or more life cycles having a “migration” life cycle status that can be used to indicate that a data update is a migration such that data operations associated with migrating data can be performed.

By way of a particular migration example, the merger data update described in relation to FIGS. 5-7 may be performed in the context of a migration from one data schema to another. For instance, subscriber record 210-4 may be defined according to a first legacy data schema. An enterprise may wish to transition data records from the first legacy data schema to another data schema, which may be a second legacy data schema or a new data schema. The migration may be performed as described above where the migration includes creating new subscriber record 210-6 in accordance with the target data schema. Other steps may be performed as described above to transfer subscriber record 210-5 from subscriber record 210-4 to subscriber record 210-6.

Subscriber record 210-4 may then be phased out. The coordinator subsystem 120 may be configured to determine whether predefined criteria have been satisfied, and once they have been, the life cycle status of the subscriber record 210-4 may be incrementally changed to “expired,” “inactive,” “no action,” and “delete” to remove the subscriber record 210-4 from the system 100. Each life cycle change may be made when associated criteria are satisfied. For example, the life cycle status of the subscriber record 210-4 may be changed to “expired” to indicate that future data operations should not use the subscriber record 210-4, to “inactive” when no uncompleted activities or data records are associated with the subscriber record 210-4, to “inactive” to prevent future operations from being performed on the subscriber record 210-4, and to “delete” to have the subscriber record 210-4 deleted from data store 140. In this or similar manner, the coordinator subsystem 120 can coordinate data migrations in a centrally-controlled manner.

Returning now to FIG. 1A, the access subsystem 150 may include or be implemented on one or more computing devices (e.g., servers). In certain implementations, the access subsystem 150 includes one or more servers configured to communicate with the access device 160 over a communication network. The communication network may include any network suitable for carrying communications between the access device 160 and the access subsystem 150, including, but not limited to, the Internet or an intranet. In certain implementations, the access subsystem 150 includes one or more web servers configured to provide web-based communications (e.g., Hypertext Markup Language (“HTML”) messages) to the access device 160. In certain implementations, the access subsystem 150 provides an access portal by users (e.g., customers subscribing to enterprise services) can access and manage information associated with the user and maintained by the enterprise.

The access subsystem 150 may be configured to receive input messages from the access device 160, which may include any messages for interacting with the coordinator subsystem 120. Through the access subsystem 150, a user may order services, initiate data updates, access views of global data to which the user is entitled access, and perform any other function that utilizes or affect the global data associated with the user. Through the access subsystem 150, a user of the access device 160 may perform any of the remote access functions described in the above noted co-pending U.S. patent application Ser. No. 11/443,363.

The access device 160 may include any device physically or remotely accessible to one or more users (e.g., users associated with an enterprise or with a customer of an enterprise) and that allows a user to provide input to and receive output from the access subsystem 150. For example, the access device 160 can include, but is not limited to, one or more desktop computers, laptop computers, tablet computers, personal computers, personal data assistants, cellular telephones, satellite pagers, wireless internet devices, embedded computers, video phones, network interface cards, mainframe computers, mini-computers, programmable logic devices, routers, modems, home communication terminals, set-top boxes, and any other devices capable of communicating with the access subsystem 150. The access device 160 can also include various peripherals such as a terminal, keyboard, mouse, screen, printer, stylus, input device, output device, or any other apparatus that can help a user interact with the access device 160.

The access device 160 may be communicatively coupled to the access subsystem 150 using any suitable communication technologies, including any of the communication technologies listed above.

The access device 160 provides access to the access subsystem 150 and consequently to the data integration subsystem 120 via the access subsystem 150. The access device 160 and access subsystem 150 may be configured to provide internal access (e.g., to enterprise users), external access (e.g., to customer users), or both internal and external access to the data integration subsystem 120 and the integrated data stored therein.

The access device 160 may include instructions for generating and operating the user interface 170. The instructions may be in any computer-readable format, including software, firmware, microcode, and the like. When executed by a processor (not shown) of the access device 160, the instructions may present the user interface 170 to a user of the access device 160.

The user may utilize the user interface 170 to initiate communications (e.g., data updates) with and/or consider output from the access subsystem 150. The user interface 170 may be equipped to present information to and receive input from users. For example, the user interface may present views of global data to a user of the access device 160.

In certain implementations, the coordinator subsystem 120 may be configured to provide access to one or more particular views of global data relationships (e.g., hierarchical data structures) via the access subsystem 150. Accordingly, a user can access and view certain hierarchical data structures. A particular hierarchical data structure to which a user has access may be referred to as an entitlement view. In certain exemplary implementations, the entitlement view is the same as the billing view in the global data.

Because a user may have access to an entitlement view of data, the coordinator subsystem 120 may provide additional controls or checks for data updates to the entitlement view. In certain examples, data updates may be propagated to the entitlement view only when the updates are verified as something that should be made available to the user. For example, a billing data subsystem 110-1 may be asked to verify a data update before it is applied to an entitlement view. This enables the system 100 to perform data updates in a manner that is transparent to the user. For example, a data migration may be performed without the user being aware of it. The user may continue to have access to the entitled data during the data migration. When the data migration is complete and verified, it may then be applied to the entitlement view. This is another benefit of asynchronous updates of global data views.

While FIG. 1 shows a single access device 160 and user interface 170, this is only illustrative. One or more access devices 160 and user interfaces 170 may be used for communications with the access subsystem 150.

FIG. 8 is a flowchart illustrating an exemplary data update process. While FIG. 8 illustrates exemplary steps according to one implementation, other implementations may omit, add to, reorder, and/or modify any of the steps shown in FIG. 8.

In step 810, local data is maintained in a plurality of heterogeneous data subsystems 110. Step 810 may be performed in any of the ways described above. The local data may be maintained according to local business rules, which may be diverse across the data subsystems 110.

In step 820, a coordinator subsystem 120 maintains global data mapped from the local data. Step 820 may be performed in any of the ways described above, including any of the ways described in the above noted U.S. patent application Ser. No. 11/443,363.

In step 830, a global data life cycle model is defined. Step 830 may be performed in any of the ways described above, including one or more operators of the coordinator subsystem 120 defining the global data life cycle model to represent business rules of enterprise organizations. As described above, the global data life cycle model may provide a common protocol for communications between the coordinator subsystem and the heterogeneous data subsystems.

In step 840, at least one life cycle is defined for the global data based on the global data life cycle model. Step 840 may be performed in any of the ways described above. In certain implementations, different life cycles are defined for different types of data records included in the global data.

In step 850, a data update is coordinated between the global data and the local data based on the global data life cycle model. Step 850 may be performed in any of the ways described above, including using one or more data update messages defined in accordance with the global data life cycle model for communications between the coordinator subsystem 120 and the heterogeneous data subsystems 110. Each data update message may include at least one life cycle identifier for a data record associated with the data update. The life cycle identifier may be used to determine data operations to be performed to apply the data update. Significantly, the life cycle identifier may also be used to determine when to apply data updates to specific data instances such that data updates can be applied asynchronously as may best fit business rules of the heterogeneous data subsystems.

The exemplary systems and methods described above may be configured to perform or at least facilitate data schema conversions. Typically, the heterogeneous data subsystems 110 maintain local data in accordance with multiple different data schemas (e.g., defined in different formats, according to different technologies, according to different data models, or according to different business rules). For example, an enterprise including heterogeneous data subsystems 110 may utilize different data schemas across the heterogeneous data subsystems 100 as a result of one or more mergers of business entities associated with the enterprise. The different data schemas may be proprietary or non-proprietary. Merely by way of example, one enterprise subsidiary may utilize one proprietary or non-proprietary data schema, and another enterprise subsidiary may utilize another proprietary or non-proprietary data schema.

For any of a number of possible reasons, the enterprise may wish to convert from one data schema (e.g., “an origin data schema”) to another data schema (e.g., “a target data schema”). For instance, the enterprise in the immediately preceding example may wish to convert data maintained in accordance with one data schema to the other proprietary data schema. Such a conversion may facilitate unification of diverse data subsystems and may help alleviate the demands associated with maintaining the diverse data subsystems.

Data schema conversions may be performed utilizing any of the data update principles described above, including using life cycle based data coordination principles for the data conversions. The components of system 100 may be configured to identify a data conversion as such. For example, data update messages defined according to the global data life cycle model 410 and passed between the data subsystems 110 and the coordinator subsystem 120 may include at least one life cycle identifier having a value indicating that the associated data update includes a data schema conversion. The coordinator subsystem 120 and the data subsystems 110 may be configured to recognize a “conversion” life cycle identifier and to perform certain predefined functions associated with a data schema conversion, including “expiring” origin data records that are being replaced with target data records.

FIG. 9 is a flowchart illustrating an exemplary data schema conversion process. While FIG. 9 illustrates exemplary steps according to one implementation, other implementations may omit, add to, reorder, and/or modify any of the steps shown in FIG. 9.

In step 910, local data is maintained in a plurality of heterogeneous data subsystems 110. Step 910 may be performed in any of the ways described above. The local data may be maintained according to local business rules and/or diverse data schemas. For example, local data records may be defined in accordance with different data schemas. The local data may include a plurality of hierarchical data structures representative of relationships between local data records. The local hierarchical data structures may be referred to as local data relationship views.

In step 920, a coordinator subsystem 120 maintains global data mapped from the local data. Step 920 may be performed in any of the ways described above, including any of the ways described in the above noted U.S. patent application Ser. No. 11/443,363. As described above, the global data may include a plurality of global hierarchical data structures representative of relationships between global data records. The global hierarchical data structures, which may be referred to as global data relationship views, may be representative of or otherwise based on local hierarchical data structures maintained in the heterogeneous data subsystems 110.

In step 930, one of the heterogeneous data subsystems 110 may initiate a data conversion of at least one local data record included in the local data from an origin data schema to a target data schema. For example, heterogeneous data subsystem 110-1 may initiate a data conversion. The data conversion may be initiated in any suitable manner, including manual, automatic, or a combination of manual and automatic local data operations configured to convert at least one local data record from the origin data schema to the target data schema. For instance, a new local data record may be created as a replacement for an existing data record maintained in heterogeneous data subsystem 110-1. The new data record may be defined to include the properties of the existing data record except that the new data record may be defined in accordance with the target data schema rather than the origin data schema. In certain implementations, the origin data schema comprises an enterprise legacy data schema, and the target data schema comprises either a new data schema or another enterprise legacy data schema.

Data relationships may be modified to incorporate the new data record into local hierarchical data structures maintained in heterogeneous data subsystem 110-1. For example, data relationships including the existing data record may be modified to include the new data record instead of the existing data record being replaced by the new data record. For instance, local map records pointing to the existing data record may be modified to point to the new data record. In this manner, local data records previously associated with the existing data record become associated with the new data record.

The local data conversion operations may also include expiring the existing data record from the local data maintained in the heterogeneous data subsystem 110-1. The existing data record may be expired in accordance with predefined local data operations logic 186. Expiration operations may include any suitable operations for removing, deactivating, freezing, isolating, deleting, or otherwise expiring a local data record.

The local data operations logic 186 may be defined to place limits on when and/or how a data record is expired. For example, one or more predefined expiration criteria may provide conditions that are to be satisfied before a data record will be expired. An example of one such condition is that no uncompleted local operations remain associated with the existing data record. For instance, heterogeneous data subsystem 110-1 may be associated with a marketing organization of an enterprise and may be configured to verify, prior to an existing data record being expired, that no uncompleted local marketing operations remain associated with the existing data record.

Local life cycle identifiers for local data records may be updated to reflect one or more stages of a local data conversion operation. For example, a local life cycle identifier status for the existing data record being replaced may include “active,” “inactive,” “no action,” or “deleted” during the local data conversion process. A life cycle identifier status for the new data record may include “created,” “conversion,” “replacement,” or “active” during the local data conversion process.

In step 940, at least one data update message representative of the data conversion is provided to the coordinator subsystem 120. The heterogeneous data subsystem 110-1 may generate and provide the data update message in any of the ways described above. In certain implementations, the data update message includes at least one life cycle identifier status (e.g., “conversion”) indicating that the data update message is associated with a data conversion operation. The coordinator subsystem 120 may be configured to receive the data update message and to use the information included therein, including the life cycle identifier status, to determine that the data update message is associated with a data conversion and to consequently perform one or more global data conversion operations.

In step 950, the coordinator subsystem 120 propagates the data conversion through to the global data. Step 950 may utilize any of the data propagation principles described above. Step 950 may include updating different global data relationship views included in the global data (i.e., global data hierarchies) at different times (i.e., asynchronously). Different global data relationship views may be incrementally or asynchronously updated such that a data conversion may be propagated into the global data in a manner that allows the data conversion to conform to diverse business rules. When and how data hierarchies and records are updated may be based on the data update message, predefined global data life cycle model 410, global data operations logic 450, and one or more predefined events. In this or similar manner, the performance of specific data propagation operations may be based on any suitable criteria, including predefined times and/or events. Examples of such criteria will be described further below.

The asynchronous propagation of the data conversion may also enable the data conversion to be performed transparently to a user having access to global data via the access subsystem 150. As described below, the global data may include an entitlement view, and the data conversion may be propagated through to the entitlement view asynchronously of the data conversion being propagated through to other global data relationship views. An example of asynchronous propagation of a data conversion, including propagation of the data conversion to an entitlement data relationship view, will be described below with reference to FIGS. 10-15.

In step 960, the data conversion is propagated from the coordinator subsystem 120 to the local data maintained in at least one of the other heterogeneous data subsystems 110. For example, the coordinator subsystem 120 may generate and provide at least one data update message to the any of the other heterogeneous data subsystems 110 such as heterogeneous data subsystem 110-2, which may be configured to translate the data update message into local data operations, as described above. The data update message may indicate that it is associated with a data conversion, and the heterogeneous data subsystem 110-2 may be configured to recognize the data conversion as such and to identify and perform associated local data conversion operations. The translator 184 may utilize the local data operations logic 186 to identify the local data operations to be performed for the data conversion.

In this or similar manner, a data conversion may be propagated between diverse data subsystems. In the exemplary process of FIG. 9, a data conversion is propagated from one heterogeneous data subsystem 110-1 to global data in data store 140, and to one or more other heterogeneous data subsystems 110. This is illustrative only and not limiting. Other data conversion processes may reorder the exemplary steps. For example, data may be propagated from heterogeneous data subsystem 110-1 to one or more data relationship views in the global data, then to another heterogeneous data subsystem 110-1, and then to one or more other data relationship views in the global data. Of course, other propagation orders may be utilized.

FIGS. 10-15 illustrate exemplary local and global hierarchical data structures during various stages of an exemplary data conversion process. FIG. 10 illustrates exemplary local and global hierarchical data structures in a first stage of the data conversion. In the stage shown in FIG. 10, the various hierarchical data structures are the same. However, this is illustrative only. In other cases, the hierarchical data structures may have differences between one another. As shown in FIG. 10, global hierarchical data structures (i.e., global data relationship views) may include a marketing view 500, a billing view 550, and an entitlement view 1010. As in the example illustrated in FIG. 5, each view may include subscriber record 210-4, subscriber record 210-5, and a map record 230-6 connecting subscriber record 210-5 as a child node of subscriber record 210-4.

The entitlement view 1010 may be made remotely accessible to a user of access device 160 through the access subsystem 150, while the marketing view 500 and billing view 550 may be made non-accessible to the user. Accordingly, the entitlement view may be subjected to certain predefined conditions (e.g., permissions) designed to control the information to which the user has access. For example, certain user permissions and/or verifications of data may be required before the data can be included in the entitlement view 1010. The predefined conditions may allow data conversion operations (and other data update operations) to be performed transparently to the user. For instance, a data conversion may be propagated to other views before being propagated into the entitlement view 1010. In certain implementations, the entitlement view 1010 may substantially mirror the billing view 550.

As is also shown in FIG. 10, local hierarchical data structures (i.e., local data relationship views) may include a marketing view 1020 and a billing view 1030. In certain implementations, the marketing view 1020 may be maintained by heterogeneous data subsystem 110-1, and the billing view 1030 may be maintained by heterogeneous data subsystem 110-2. The marketing view 500 and billing view 550 in the global data may be representative of (e.g., mapped from) the marketing view 1020 and the billing view 1030 in the local data.

As described above, heterogeneous data subsystem 110-1 may initiate a data conversion. FIG. 11 illustrates an exemplary data conversion in which subscriber record 210-4 of the local marketing view 1020 of FIG. 10 has been replaced by subscriber record 210-7. This illustrates a data conversion from an origin data schema of subscriber record 210-4 to a target data schema of subscriber record 210-7. The local data conversion operations may be performed in any of the ways described above to replace subscriber record 210-4 of local marketing view 1020 with subscriber record 210-7 to form an updated marketing view 1120. As shown in FIG. 11, the local data conversion at marketing view 1120 has not yet been propagated through to the other data relationship views in the Figure.

As described above, heterogeneous data subsystem 110-1 may generate and provide at least one data update message to the data coordinator 120, which may be configured to receive the data update message and to asynchronously propagate the data conversion through to the global data, as well as to other local data relationship views, including local billing view 1030.

FIG. 12 illustrates an exemplary data conversion in which subscriber record 210-4 of the global marketing view 500 of FIG. 11 has been replaced by subscriber record 210-7 to form updated global marketing view 1200. This illustrates a data conversion from an origin data schema of subscriber record 210-4 to a target data schema of subscriber record 210-7 in the global marketing view 1200.

Global data conversion operations may be performed in any of the ways described above to replace subscriber record 210-4 of global marketing view 500 with subscriber record 210-7 to form the updated marketing view 1200. For example, translator 430 may receive at least one data update message 190 representative of the data conversion, identify the data conversion as such based on information in the data update message (e.g., a “conversion” life cycle status), and generate one or more global data conversion operations based on the data update message, global data life cycle model 410, and global data operations logic 440. At least a subset of the data conversion operations may be performed to propagate the data conversion through to the global marketing view 1200 as shown in FIG. 12.

As shown in FIG. 12, the data conversion in the global marketing view 1200 has not yet been propagated through to the other global data relationship views 550 and 1010 in the Figure. Such asynchronous propagation of the data conversion may be preformed in accordance with business rules as defined by the global data operations logic 450. For example, the life cycle coordinator 134 may determine from the data update message that the message is representative of a data conversion initiated by heterogeneous data subsystem 110-1. The life cycle data coordinator 134 may then initiate performance of one or more global data operations that convert global marketing view 500 to global marketing view 1200 including subscriber record 210-7 that has been defined in accordance with the target data schema.

The life cycle data coordinator 134 may also determine to delay propagation of the data conversion to other data relationship views such as global billing view 550, entitlement view 1010, and local billing view 1030. Propagation of the data conversion to any of these data relationship views may be delayed until the occurrence of one or more predefined events. For example, a predefined event associated with the global billing view 550 and/or the local billing view 1030 may include completion of billing operations or activities (e.g., billing workflow tasks) associated with subscriber record 210-4 or 210-5. When the one or more predefined events associated with the global billing view 550 have occurred, the life cycle coordinator 134 may initiate propagation of the data conversion to the global billing view 550.

FIG. 13 illustrates an exemplary data conversion in which subscriber record 210-4 of the global billing view 550 of FIG. 12 has been replaced by subscriber record 210-7 to form updated global billing view 1350. This illustrates a data conversion from an origin data schema of subscriber record 210-4 to a target data schema of subscriber record 210-7 in the global billing view 1350.

As shown in FIG. 12, the data conversion has not yet been propagated through to the global billing view 550 in the Figure. Similar to the propagation described with reference to the global marketing view 1200, asynchronous propagation of the data conversion to the global billing view 550 may be performed in accordance with business rules as defined by the global data operations logic 450. For example, the life cycle coordinator 134 may be configured to wait for the occurrence of one or more predefined events defined in the global data operations logic 450. Once the events have occurred, the life cycle data coordinator 134 may initiate performance of one or more global data operations configured to convert global billing view 550 to global billing view 1350 including subscriber record 210-7 that has been defined in accordance with the target data schema.

The life cycle data coordinator 134 may determine to wait before propagating the data conversion to other data relationship views such as global entitlement view 1010 and local billing view 1030. Propagation of the data conversion to any of these data relationship views may be delayed until the occurrence of one or more other predefined events. For example, a predefined event associated with the local billing view 1030 may include completion of local billing operations or activities (e.g., billing workflow tasks) associated with subscriber record 210-4 or 210-5 in the local data. For the entitlement view 1010, a predefined event may include any suitable verification, including verification that data conversion has been successfully propagated and/or completed for certain other data relationship views (e.g., global or local billing views have been converted), and/or verification that certain local and/or global data operations have been completed. In the example illustrated in FIGS. 14 and 15, propagation of the data conversion to the entitlement view 1010 is delayed until the heterogeneous data subsystem 110-2 provides verification of the data conversion being completed for the local billing view 1430. This is illustrative only and not limiting in any sense.

FIG. 14 illustrates an exemplary data conversion in which subscriber record 210-4 of local billing view 1030 of FIG. 13 has been replaced by subscriber record 210-7 to form updated local billing view 1430. This illustrates a data conversion from an origin data schema of subscriber record 210-4 to a target data schema of subscriber record 210-7 in the local billing view 1430.

Similar to the propagations described above, asynchronous propagation of the data conversion to the local billing view 1030 may be performed in accordance with business rules as defined by the global data operations logic 450. For example, the life cycle coordinator 134 may be configured to wait for the occurrence of one or more predefined events defined in the global data operations logic 450. Once the events have occurred, the life cycle data coordinator 134 may generate at least one data update message in accordance with the global data life cycle model 410. The data update message may be provided to heterogeneous data subsystem 110-2, which may receive the data update message, translate it to one or more local data operations, and execute the local data operations to convert local billing view 1030 to local billing view 1430 including subscriber record 210-7 that has been defined in accordance with the target data schema.

The life cycle data coordinator 134 may determine to wait before propagating the data conversion to global entitlement view 1010. Propagation of the data conversion to the entitlement view 1010 may be delayed until the occurrence of one or more other predefined events. For example, the coordinator subsystem 120 may be configured to wait for verification from heterogeneous data subsystem 110-2 that the data conversion has been successfully completed for local billing view 1430.

Once the predefined event (e.g., a verification message from the heterogeneous data subsystem 110-2) has occurred, the coordinator subsystem 120 may propagate the data conversion to the entitlement view 1010. FIG. 15 illustrates an exemplary data conversion in which subscriber record 210-4 of entitlement view 1010 of FIG. 14 has been replaced by subscriber record 210-7 to form updated entitlement view 1510. This illustrates a data conversion from an origin data schema of subscriber record 210-4 to a target data schema of subscriber record 210-7 in the entitlement view 1510.

Propagation of the data conversion to the entitlement view 1010 may be performed as described above and in accordance with business rules as defined by the global data operations logic 450. The global data operations logic 450 may be defined to include predefined verifications to be checked in association with propagating data conversions to the entitlement view 1030. Such verifications may be designed to ensure that users having access to the entitlement view 1030 are provided only with appropriate information. This helps enable the coordinator subsystem 120 to propagate data conversions transparently to users, with the entitlement view 1510 being updated when other data conversion operations have been performed in a transparent manner.

Data conversion operations may also include expiration of replaced data records such as subscriber record 210-4 in the local and global data subsystems. Heterogeneous data subsystems 110-1 and 110-2 may be configured to expire their respective subscriber records 210-4 in accordance with their respective local data operations logic 186, and the coordinator subsystem 120 may be configured to expire its subscriber record 210-4 in accordance with the global data operations logic 450. As described above, an expiration of a data record may include one or more stages that may be identified by corresponding life cycle statuses. The stages may be conditionally performed based on the occurrence of predefined expiration events.

For example, the coordinator subsystem 120 may be configured to determine whether predefined criteria have been satisfied, and once they have been, the life cycle status of the subscriber record 210-4 may be incrementally changed to “expired,” “inactive,” “no action,” and “delete” to remove the subscriber record 210-4 from the global data. Each life cycle change may be made when associated criteria are satisfied. For example, the life cycle status of the subscriber record 210-4 may be changed to “expired” to indicate that future data operations should not use the subscriber record 210-4, to “inactive” when no uncompleted activities or data records are associated with the subscriber record 210-4, to “inactive” to prevent future operations from being performed on the subscriber record 210-4, and to “delete” to have the subscriber record 210-4 deleted from data store 140.

Based on the principles described above, data conversions can be asynchronously propagated through various subsystems of system 100. Moreover, data conversion operations can be performed transparently to users having access to certain data maintained by the system 100.

The preceding description has been presented only to illustrate and describe exemplary implementations with reference to the accompanying drawings. It will, however, be evident that various modifications and changes may be made thereto, and additional implementations may be implemented, without departing from the scope of the invention as set forth in the claims that follow. The above description and accompanying drawings are accordingly to be regarded in an illustrative rather than a restrictive sense. 

1. A system comprising: a plurality of heterogeneous data subsystems maintaining local data; and a coordinator subsystem configured to maintain global data mapped from the local data, the global data including a plurality of global data relationship views; wherein one of said heterogeneous data subsystems is configured to initiate a data conversion of at least one local data record included in the local data from an origin data schema to a target data schema and to provide at least one data update message representative of the data conversion to said coordinator subsystem; wherein said coordinator subsystem is configured to receive the at least one data update message and asynchronously propagate the data conversion through to at least a subset of the global relationships views in the global data.
 2. The system of claim 1, wherein the propagation of the data conversion includes replacement of at least one origin global data record defined according to the origin data schema with a corresponding at least one replacement global data record defined according to the target data schema.
 3. The system of claim 2, wherein the replacement includes an updating of at least one map record included in the global data to point to the at least one replacement global data record instead of the at least one origin global data record.
 4. The system of claim 2, wherein the replacement includes expiration of the at least one origin global data record.
 5. The system of claim 2, wherein the at least one replacement global data record includes at least one of a subscriber data record, subscription data record, and map record.
 6. The system of claim 1, wherein the asynchronous propagation of the data conversion includes: propagation of the data conversion to one of the global data relationship views; and delaying propagation of the data conversion to another of the global data relationship views until the occurrence of at least one predefined event.
 7. The system of claim 6, wherein the one of the global data relationship views is representative of a local data relationship view maintained by the one of the heterogeneous data subsystems configured to initiate the data conversion.
 8. The system of claim 7, wherein the other of the global data relationship views is representative of another local data relationship view maintained by another of the heterogeneous data subsystems.
 9. The system of claim 7, wherein the other of the global data relationship views includes an entitlement view that is remotely accessible to a user.
 10. The system of claim 7, wherein the at least one predefined event includes completion of operations associated with the other of the global data relationship views.
 11. The system of claim 1, wherein the global data relationships views include at least a first global data relationship view representative of a first local data relationship view maintained by the one of the heterogeneous data subsystems configured to initiate the data conversion, a second global data relationship view representative of a second local data relationship view maintained by another of said heterogeneous data subsystems, and a third global data relationship view that is remotely accessible to a user.
 12. The system of claim 11, wherein the asynchronous propagation of the data conversion includes: propagation of the data conversion to the first global data relationship view; propagation of the data conversion to the second global data relationship view in response to an occurrence of at least one predefined event; and propagation of the data conversion to the third global data relationship view in response to an occurrence of at least one other predefined event.
 13. The system of claim 1, wherein the origin data schema includes an enterprise legacy data schema, and the target data schema includes another enterprise legacy data schema.
 14. The system of claims 1, wherein said coordinator subsystem is configured to propagate the data conversion to at least one other of the heterogeneous data subsystems.
 15. The system of claim 1, wherein the at least one data update message includes a life cycle status identifier indicative of the data conversion.
 16. A system comprising: a plurality of heterogeneous data subsystems maintaining local data; and a coordinator subsystem configured to maintain global data mapped from the local data, the global data including a plurality of global data relationship views, the plurality of global data relationship views including a global marketing data relationship view, a global billing data relationship view, and a global entitlement data relationship view, the global entitlement data relationship view being remotely accessible to a user; wherein one of said heterogeneous data subsystems is configured to initiate a data conversion of at least one local data record included in the local data from an origin data schema to a target data schema and to provide at least one data update message representative of the data conversion to said coordinator subsystem; wherein said coordinator subsystem is configured to receive the at least one data update message, propagate the data conversion to the global marketing data relationship view, delay propagation of the data conversion to the global billing data relationship view until an occurrence of at least one predefined event, propagate the data conversion to the global billing data relationship view in response to the occurrence of the at least one predefined event, delay propagation of the data conversion to the global entitlement data relationship view until an occurrence of at least one other predefined event, propagate the data conversion to the global entitlement data relationship view in response to the occurrence of the at least one other predefined event.
 17. A method comprising: maintaining local data stored in a plurality of heterogeneous data subsystems; a coordinator subsystem maintaining global data mapped from the local data, the global data including a plurality of global data relationship views; one of the heterogeneous data subsystems initiating a data conversion of at least one local data record included in the local data from an origin data schema to a target data schema and providing at least one data update message representative of the data conversion to the coordinator subsystem; and the coordinator subsystem receiving the at least one data update message and asynchronously propagating the data conversion through to at least a subset of the global relationships views in the global data.
 18. The method of claim 17, wherein said propagating of the data conversion includes replacing at least one origin global data record defined according to the origin data schema with a corresponding at least one replacement global data record defined according to the target data schema.
 19. The method of claim 18, wherein said replacing includes updating at least one map record included in the global data to point to the at least one replacement global data record instead of the at least one origin global data record.
 20. The method of claim 18, wherein said replacing includes expiring the at least one origin global data record.
 21. The method of claim 17, wherein said asynchronous propagating of the data conversion includes: propagating the data conversion to one of the global data relationship views; and delaying propagation of the data conversion to another of the global data relationship views until the occurrence of at least one predefined event.
 22. The method of claim 17, wherein said asynchronous propagating of the data conversion includes: propagating the data conversion to a first of the global data relationship views; propagating the data conversion to a second of the global data relationship views in response to an occurrence of at least one predefined event; and propagating the data conversion to a third of the global data relationship views in response to an occurrence of at least one other predefined event.
 23. The method of claims 17, further comprising said coordinator subsystem propagating the data conversion to at least one other of the heterogeneous data subsystems. 